/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.hd2tecnologia.utilidades;

import com.hd2tecnologia.mensagens.LogErros;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Júnior
 */
public class Util {
    
    Icones icone = new Icones();
    
    public String dataBD(String data, String tipo){
        
        String[] array = data.split(tipo); 
        String newData = array[2]+"-"+array[1]+"-"+array[0];
        return newData;
    }
    
    public String BDdata(String data, String tipo){
        String[] array = data.split(tipo);
        String newData = array[2]+"-"+array[1]+"-"+array[0];
        return newData;
    }
    
    public String convertDadosLog(String log){
        
        String[] array = log.split("-");
        String[] array2 = array[2].split(" ");
        String[] hora = array2[1].split(":");
        String Log = array2[0]+"/"+array[1]+"/"+array[0]+" às "+hora[0]+":"+hora[1];
        return Log;
        
    }
    
    public void RemoveMaskCPF(String cpf){
        
        System.out.println(cpf);
        String[] array = cpf.split(".");
        System.out.println(array[0]);
    }
   
    public boolean checkDate(String _data) {
    
    LogErros log = LogErros.getInstance();
    
        if (_data.equals("  -  -    ")) {
        
        log.setMsg("Os campos que possuem * são obrigatórios!");
        log.setIcone(icone.getALERTA());
        return false;
        
        }else{
            
            Calendar cal = Calendar.getInstance();
            int anoAtual = cal.get(Calendar.YEAR);
            
            String datas[] = _data.split("-");
            int ano = Integer.parseInt(datas[2]);
            int mes = Integer.parseInt(datas[1]);
            int dia = Integer.parseInt(datas[0]);

            if ((dia < 1) || (dia > 31)) {
                log.setMsg("O dia " + dia + " não é válido!");
                return false;
            } else {
                if ((mes < 1) || (mes > 12)) {
                    log.setMsg("O mês " + mes + " não é válido!");
                    return false;
                } else {
                    if ((ano < 1900) || (ano > anoAtual)) {
                        log.setMsg("O ano " + ano + " não é válido!");
                        return false;
                    } else {
                        return true;
                    }
                }
            }
        }
    }
    /*
    public Boolean checkIfProcessIsRunning(String namePart)
    {

        List<String> processes = listRunningProcesses();
        String result = "";

        // display the result
        Iterator<String> it = processes.iterator();

        int i = 0;

        while (it.hasNext())
        {
            result += it.next();
            i++;
        }

        if (!result.contains(namePart))
        {
            return false;
        }


        return true;

    }
    
    
    private List<String> listRunningProcesses()
    {
        List<String> processes = new ArrayList<>();
       try
        {
            String line;
            Process p = Runtime.getRuntime().exec("tasklist.exe /fo csv /nh");
            try (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()))){
                while ((line = input.readLine()) != null)
                {
                    if (!line.trim().equals(""))
                    {
                        // keep only the process name
                        line = line.substring(1);
                        processes.add(line.substring(0, line.indexOf("\"", 1)) + "\n");
                    }

                }
            }


        }
        catch (Exception err)
        {
            JOptionPane.showMessageDialog(null, "" + err.getMessage());
        }
        return processes;

    }*/
    
    
    public boolean validarCPF(String strCpf) {
        
        if (strCpf.equals("")) {
            return false;
        }
        int d1, d2;
        int digito1, digito2, resto;
        int digitoCPF;
        String nDigResult;

        d1 = d2 = 0;
        digito1 = digito2 = resto = 0;

        for (int nCount = 1; nCount < strCpf.length() - 1; nCount++) {
            digitoCPF = Integer.valueOf(strCpf.substring(nCount - 1, nCount)).intValue();

            //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.  
            d1 = d1 + (11 - nCount) * digitoCPF;

            //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.  
            d2 = d2 + (12 - nCount) * digitoCPF;
        }

        //Primeiro resto da divisão por 11.  
        resto = (d1 % 11);

        //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.  
        if (resto < 2) {
            digito1 = 0;
        } else {
            digito1 = 11 - resto;
        }

        d2 += 2 * digito1;

        //Segundo resto da divisão por 11.  
        resto = (d2 % 11);

        //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.  
        if (resto < 2) {
            digito2 = 0;
        } else {
            digito2 = 11 - resto;
        }

        //Digito verificador do CPF que está sendo validado.  
        String nDigVerific = strCpf.substring(strCpf.length() - 2, strCpf.length());

        //Concatenando o primeiro resto com o segundo.  
        nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

        //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.  
        return nDigVerific.equals(nDigResult);
    }
    
    
}
